# 普通函数
def f(a, b):
    return a + b


result = f(1, 2)
print(result)
# 匿名函数
fun = lambda a, b: a + b
a = fun(5, 2)
print(a)

# 普通函数
a = [1, 2, 3, 4, 5]
b = []
for i in a:
    b.append(i ** 2)
print(b)


def f(x):
    return x ** 2


# 映射函数 第一个参数是函数  第二参数是列表 每一个值都会进入函数重新计算
# result = map(f, a)
result = map(lambda a: a ** 2, a)
print(result)  # <map object at 0x000001B5775060E0> 是一个对象
print(list(result))  # 转列表

from functools import reduce

# reduce 累计 记住上一个数字并进行计算
result = reduce(lambda x, y: x + y, a)
print(result)

# filter 过滤
result = filter(lambda x: x % 2, a)  # 返回的是对象
print(list(result))
